﻿//int* findErrorNums(int* nums, int numsSize, int* returnSize) {
//    int arr[10002] = { 0 };
//    int* res = malloc(sizeof(int) * 3);
//
//    for (int i = 0; i < numsSize; ++i) {
//        arr[nums[i]]++;
//        if (arr[nums[i]] == 2) res[0] = nums[i];
//    }
//    for (int i = 0; i < numsSize; ++i) {
//        if (arr[i + 1] == 0) res[1] = i + 1;
//    }
//    *returnSize = 2;
//    return res;
//}

//int left = 0;
//int right = numsLen - 1;
//while (left <= right)
//{
//    int mid = left + (right - left + 1) / 2;
//    if (nums[mid] < nums[mid - 1])
//        return nums[mid];
//    else if (nums[mid] > nums[0])
//        left = mid + 1;
//    else if (nums[mid] < nums[numsLen - 1])
//        right = mid - 1;
//    else
//    {
//        int i = left;
//        while (i <= right)
//        {
//            if (nums[i] != nums[mid])
//                break;
//            ++i;
//        }
//        if (i <= mid)
//            right = mid;
//        else
//            left = mid;
//    }
//}
//return nums[0];

//int minNumberInRotateArray(int* nums, int numsLen) {
//    int left = 0;
//    int right = numsLen - 1;
//    while (left < right)
//    {
//        int mid = (left + right) / 2;
//        if (nums[mid] < nums[right])
//            right = mid;
//        else if (nums[mid] > nums[right])
//            left = mid + 1;
//        else
//            right--;
//    }
//    return nums[left];
//}